1   /*
2    * Copyright (C) 2009 The Guava Authors
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.google.common.annotations;
18  
19  import java.lang.annotation.Documented;
20  import java.lang.annotation.ElementType;
21  import java.lang.annotation.Retention;
22  import java.lang.annotation.RetentionPolicy;
23  import java.lang.annotation.Target;
24  
25  /**
26   * The presence of this annotation on a method indicates that the method may
27   * <em>not</em> be used with the
28   * <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a> (GWT),
29   * even though its type is annotated as {@link GwtCompatible} and accessible in
30   * GWT.  They can cause GWT compilation errors or simply unexpected exceptions
31   * when used in GWT.
32   *
33   * <p>Note that this annotation should only be applied to methods, fields, or
34   * inner classes of types which are annotated as {@link GwtCompatible}.
35   *
36   * @author Charles Fry
37   */
38  @Retention(RetentionPolicy.CLASS)
39  @Target({
40      ElementType.TYPE, ElementType.METHOD,
41      ElementType.CONSTRUCTOR, ElementType.FIELD })
42  @Documented
43  @GwtCompatible
44  public @interface GwtIncompatible {
45    /**
46     * Describes why the annotated element is incompatible with GWT. Since this is
47     * generally due to a dependence on a type/method which GWT doesn't support,
48     * it is sufficient to simply reference the unsupported type/method. E.g.
49     * "Class.isInstance".
50     */
51    String value();
52  }